package com.academico.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.academico.database.Connect;
import com.academico.model.UsuarioSistema;
import com.academico.model.UsuarioSistema.SituacaoUsuari;
import com.academico.util.Util;

public class UsuarioSistemaDAO {
	
	private Connection connection;
	
	public UsuarioSistemaDAO(){
		this.connection = Connect.getInstance();
	}
	
	public void save(UsuarioSistema usuario){
		if(Util.isNotNull(usuario)){
			insert(usuario);
		}
	}
	
	
	private void insert(UsuarioSistema usuario){
		String query = "INSERT INTO usuariosistema (nomeusuario, senha, situacaousuario)";
		query += "VALUES ('"+ usuario.getNomeUsuario() + "','" + usuario.getSenhaUsuario() + "','" + usuario.getSituacaoUsuario()+ "')";
		Statement stmt = null; 
		try {
			stmt = connection.createStatement();
			stmt.executeUpdate(query);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}	
		}
	}
	
	public List<UsuarioSistema> findByNomeUsuario(String nomeUsuario){
		if(Util.isNotNull(nomeUsuario)){
			String query = "SELECT * FROM usuariosistema WHERE nomeusuario like '%" + nomeUsuario +"%'";
			Statement stmt = null; 
			List<UsuarioSistema> listaUsuarioSistema = new ArrayList<UsuarioSistema>();
			try {
				stmt = connection.createStatement();
				ResultSet rs = stmt.executeQuery(query);
				
				while (rs.next()) {
					UsuarioSistema usuario = new UsuarioSistema();
					usuario.setCodigoUsuario(rs.getInt("codigousuario"));
					usuario.setNomeUsuario(rs.getString("nomeusuario"));
					usuario.setSenhaUsuario(rs.getString("senha"));
					SituacaoUsuari situacaoUsuario = UsuarioSistema.SituacaoUsuari.valueOf(rs.getString("situacaousuario"));
					usuario.setSituacaoUsuario(situacaoUsuario);
					usuario.setDataInclusaoUsuario(rs.getTimestamp("datainclusaousuario"));
					listaUsuarioSistema.add(usuario);
				}
				return listaUsuarioSistema;
				
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					stmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		return null;
	}
}
